Zucker SOCをULX3Sへ移植した
#Zucker_SOC #ULX3S #FPGA
from Zucker SOC
ULX3S の SDRAMと互換性のあるSDRAMコントローラを持った SOC 無いかなーと思ってたところ、Machdyne 社の PicoRV32 ベースの SOC 「Zucker SOC」を発見。Machdyne 社の Schoko ( https://machdyne.com/product/schoko-computer/ ) が ULX3S と同じ ECP5 を使ってるので、それをベースに移植を行った。
オリジナル
https://github.com/machdyne/zucker
ULX3Sへの移植
https://github.com/thata/zucker
Zucker SOC移植後、SDRAMコントローラのテストのため以下のようなプログラムを書いて動かしてみた。正しい結果を取得できていたので大丈夫そう。
code:foo.S
// SDRAMへの値の出し入れ
// mem0x4000_0000 = 10
li t1, 0x40000000
li t0, 10
sw t0, 0(t1)
// mem0x4000_0004 = 20
li t1, 0x40000004
li t0, 20
sw t0, 0(t1)
// t2 = mem0x4000_0000
li t1, 0x40000000
lw t2, 0(t1)
// t3 = mem0x4000_0004
li t1, 0x40000004
lw t3, 0(t1)
// t0 = t2 + t3
add t0, t2, t3
// 10 + 20 の結果をLEDに表示
li t1, 0xf0001000 // LEDコントロールレジスタのアドレス
sw t0, 0(t1) // LEDコントロールレジスタへ書き込み
// 無限ループ
foo:
j foo